import os
import sys
import shutil
import subprocess


def build_exe():
    print("开始打包 TXT转EPUB工具...")

    # 确保当前目录是项目根目录
    os.chdir(os.path.dirname(os.path.abspath(__file__)))

    # 清理之前的构建文件
    if os.path.exists("build"):
        shutil.rmtree("build")
    if os.path.exists("dist"):
        shutil.rmtree("dist")

    # 构建命令
    cmd = [
        "pyinstaller",
        "--name=TXT转EPUB工具",
        "--windowed",  # 不显示控制台窗口
        "--icon=favicon.ico",
        "--add-data=template;template",  # 添加模板文件夹
        "--add-data=epub;epub",  
        "--add-data=favicon.ico;.",  # 添加图标文件
        "--hidden-import=epub.txt_process",  # 正确引入Python模块
        "--hidden-import=epub.epub_create",
        "--hidden-import=epub.zip_epub",
        "--hidden-import=epub.cover_image",
        "--noconfirm",  # 不询问确认
        "--clean",  # 清理临时文件
        "epub/gui_index.py"
    ]

    # 执行打包命令
    result = subprocess.run(cmd, capture_output=True, text=True)

    if result.returncode == 0:
        print("打包成功！")
        print(f"可执行文件位置: {os.path.abspath('dist/TXT转EPUB工具/TXT转EPUB工具.exe')}")

        # 复制其他必要文件到dist目录
        dist_dir = os.path.join("dist", "TXT转EPUB工具")

        print("打包完成！")

        # 清理生成的build目录和.spec文件
        if os.path.exists("build"):
            shutil.rmtree("build")
        spec_file = "TXT转EPUB工具.spec"
        if os.path.exists(spec_file):
            os.remove(spec_file)
        print("已清理临时文件")

        return True
    else:
        print("打包失败！")
        print("错误信息:")
        print(result.stderr)
        return False


if __name__ == "__main__":
    build_exe()
